<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script>
        //错误情况1
        // if (x) {
        //     let foo;
        //     let foo; // SyntaxError thrown.
        // }

         //错误情况2
        // let x = 1;
        // switch (x) {
        //     case 0:
        //         let foo;
        //         break;
        //     case 1:
        //         let foo; // SyntaxError for redeclaration.
        //         break;
        // }

        //正确情况：然而，需要特别指出的是，一个嵌套在 case 子句中的块会创建一个新的块作用域的词法环境，就不会产生上诉重复声明的错误。
        let x = 1;

        switch (x) {
            case 0: {
                let foo;
                break;
            }
            case 1: {
                let foo;
                break;
            }
        } 
    </script>
</head>

<body>

</body>

</html>